package org.eerbaar.parser.grammers;

import org.eerbaar.parser.Factory;
import org.eerbaar.parser.core.Grammar;
import org.eerbaar.parser.core.def.Symbol;
import org.eerbaar.parser.core.def.impl.DefaultGrammar;
import org.eerbaar.parser.core.exe.SymbolInstance;

public class NumericGrammarCNF
    extends DefaultGrammar {

    public enum T
            implements Symbol {
        INT;

        @Override
        public String getName() {
            return super.name();
        }

        @Override
        public String toDebugString() {
            return super.name();
        }

    }

    public NumericGrammarCNF() {
        super();
        createGrammar();
    }

    public Grammar createGrammar() {

        // create terminals
        SymbolInstance[] t = Factory.createSymbols("0123456789");
        System.out.println(T.INT.toDebugString());

        addNonTerminalProduction(T.INT, new Symbol[] { T.INT, T.INT });

        addTerminalProduction(T.INT, t[0]);
        addTerminalProduction(T.INT, t[1]);
        addTerminalProduction(T.INT, t[2]);
        addTerminalProduction(T.INT, t[3]);
        addTerminalProduction(T.INT, t[4]);
        addTerminalProduction(T.INT, t[5]);
        addTerminalProduction(T.INT, t[6]);
        addTerminalProduction(T.INT, t[7]);
        addTerminalProduction(T.INT, t[8]);
        addTerminalProduction(T.INT, t[9]);

        return this;
    }

}